This Background is intended to provide the basic context of this patent application and is not intended to describe a specific problem to be solved.
In the network environment of modern computing, portable data, documents, and applications are ubiquitous. One component of creating truly portable data and documents for portable applications is that they are extensible. For example, the data and documents for portable applications should be easily customizable to add new functions and modify the behavior of existing functions for a wide variety of applications. Extensible Markup Language (XML) is an adaptable way to create common information formats and share both the format and the data across networks such as the World Wide Web and intranets. In a common scenario, developers may agree on a standard method to describe the information about a computer hardware component (e.g., processor performance, memory, etc.). The developers may then describe the component information format with XML. Standardizing the information description enables all users to send and retrieve data about the component or incorporate the component into various applications without specific knowledge of the component's description. Thus, XML can be employed to consistently and reliably share information.
XML is similar to Hypertext Markup Language, HTML, as both XML and HTML contain markup symbols to describe the contents of a page or file. XML, however, is not a markup language, but rather, a “metalanguage” used to create other specialized languages. XML provides an approach to define complex documents and data structures (e.g., invoices, molecular data, news feeds, glossaries, inventory descriptions, real estate properties, etc.). As long as the XML definition (i.e., the “schema”) for a collection of data is available, developers are able to create applications to reliably process any data formatted according to those rules.
I/O operations, such as reading from or writing to a disk, or other system calls, are typically employed to process digital documents, including XML documents. To process an XML document or other digital document, the execution threads that perform the processing operations of a computer are usually unable to complete any other document processing until an I/O operation completes. In other words, the threads required to process the XML document (e.g., XML process-specific threads, etc.) are blocked once I/O begins, and cannot continue processing until the I/O system thread returns. In the intervening period, the entire document processing operation is blocked by the kernel and cannot run, which may significantly delay execution or starve other XML processing threads.
Therefore, past methods for XML document processing that include I/O have had the unwanted effect of significantly limiting the scalability of XML document processing.